package edu.corn.job.core.processor;

import cn.hutool.core.collection.ListUtil;
import edu.corn.job.core.context.JobRunningContext;
import edu.corn.job.core.engine.JobEngine;

import java.util.List;

public interface IProcessor extends RetryProcessor {


    /**
     * 提供统一的执行接口。
     * 级联job的execute是将子job放入调用栈中。
     * 组合job也是将子job放入调用栈中。
     * 只有phase_job执行真正的逻辑。
     */
    void execute(JobRunningContext context);


    /**
     * 返回子job或者phase。
     *
     * @return 返回子job或者phase。
     */
    default List<AbstractJobProcessor> children() {
        return ListUtil.empty();
    }


    /**
     * 返回绑定的引擎。
     * @return 引擎。
     */
    JobEngine getEngine();

    /**
     * 返回job名字。不是id。
     * @return 返回job名，不是id。
     */
    String getName();

}
